home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Graphics / Misc / Wood.0.72 / Sources / IPPanel.m < prev    next >
Encoding:
Text File  |  1995-08-02  |  3.3 KB  |  174 lines

  1.  
  2. #import <ansi/stdlib.h>
  3. #import <ansi/string.h>
  4. #import "IPPanel.h"
  5.  
  6. static const char *PANELPREFIX = "IPPANEL";
  7.  
  8. @interface IPPanel (IPPanelPrivateMethods)
  9.  
  10. - (void)_saveVisibleUsingName:(const char *)name isVisible:(BOOL)flag;
  11.  
  12. @end
  13.  
  14.  
  15. @implementation IPPanel
  16.  
  17. + (BOOL)isPanelSavedAsVisible:(const char *)name
  18. {
  19.     const char    *state;
  20.     char *vname;
  21.     
  22.     if(name != NULL){
  23.         vname = (char *)NXZoneMalloc([self zone], strlen(name) + strlen(PANELPREFIX) + 1);
  24.         strcpy(vname, PANELPREFIX);
  25.         strcat(vname, name);
  26.         state = NXGetDefaultValue([NXApp appName], vname);
  27.         if( state != NULL && atoi( state ) > 0 )
  28.             return YES;
  29.     }
  30.     return NO;
  31. }
  32.  
  33. - initContent:(const NXRect *)contentRect
  34.         style:(int)aStyle
  35.       backing:(int)bufferingType
  36.    buttonMask:(int)mask
  37.         defer:(BOOL)flag
  38. {
  39.     [super initContent:contentRect
  40.                  style:aStyle
  41.                backing:bufferingType
  42.             buttonMask:mask
  43.                   defer:flag];                 
  44.     _visibleName = NULL;
  45.     return self;
  46. }
  47.  
  48.  
  49. - free
  50. {
  51.     free(_visibleName);
  52.     return [super free];
  53. }
  54.  
  55. - (BOOL)setVisibleAutosaveName:(const char *)name
  56. {
  57.     if(name != NULL){
  58.         if(_visibleName)
  59.             _visibleName = (char *)NXZoneRealloc([self zone], _visibleName, strlen(name) + 1);
  60.         else
  61.             _visibleName = (char *)NXZoneMalloc([self zone], strlen(name) + 1);
  62.         strcpy(_visibleName, name);
  63.         if(![self setVisibleUsingName:_visibleName])
  64.             [self saveVisibleUsingName:_visibleName];
  65.     } else {
  66.         if(_visibleName)
  67.             NX_FREE(_visibleName);
  68.         _visibleName = NULL;
  69.     }    
  70.     return YES;
  71. }
  72.  
  73. - (BOOL)setVisibleAutosaveLikeFrameName
  74. {
  75.     return [self setVisibleAutosaveName:[self frameAutosaveName]];
  76. }
  77.  
  78. - (const char *)visibleAutosaveName
  79. {
  80.     return _visibleName;
  81. }
  82.  
  83.  
  84. - (void)_saveVisibleUsingName:(const char *)name isVisible:(BOOL)flag
  85. {
  86.     char *vname;
  87.  
  88.     if(name != NULL){
  89.         vname = (char *)NXZoneMalloc([self zone], strlen(name) + strlen(PANELPREFIX) + 1);
  90.         strcpy(vname, PANELPREFIX);
  91.         strcat(vname, name);
  92.         if(flag)
  93.             NXWriteDefault([NXApp appName], vname, "1");
  94.         else
  95.             NXWriteDefault([NXApp appName], vname, "0");
  96.         NX_FREE(vname);
  97.     }
  98. }
  99.  
  100.  
  101. - (void)saveVisibleUsingName:(const char *)name
  102. {
  103.     [self _saveVisibleUsingName:name isVisible:[self isVisible]];
  104. }
  105.  
  106.  
  107. - (BOOL)setVisibleUsingName:(const char *)name
  108. {
  109.     const char *state;
  110.     char *vname;
  111.     
  112.     if(name != NULL){
  113.         vname = (char *)NXZoneMalloc([self zone], strlen(name) + strlen(PANELPREFIX) + 1);
  114.         strcpy(vname, PANELPREFIX);
  115.         strcat(vname, name);
  116.         state = NXGetDefaultValue([NXApp appName], vname);
  117.         NX_FREE(vname);
  118.         if(state != NULL){
  119.             if(atoi(state))
  120.                 [super orderFront:self];
  121.             else
  122.                 [super orderOut:self];
  123.             return YES;
  124.         }
  125.     }
  126.     return NO;
  127. }
  128.  
  129.  
  130. - windowWillClose:sender
  131. {
  132.     if(_visibleName != NULL) 
  133.         [self _saveVisibleUsingName:_visibleName isVisible:0];
  134.     return self;
  135. }
  136.  
  137.  
  138. - orderBack:sender
  139. {
  140.     [super orderBack:sender];
  141.     if(_visibleName != NULL)
  142.         [self saveVisibleUsingName:_visibleName];
  143.     return self;
  144. }
  145.  
  146.  
  147. - orderFront:sender
  148. {
  149.     [super orderFront:sender];
  150.     if(_visibleName != NULL)
  151.         [self saveVisibleUsingName:_visibleName];
  152.     return self;
  153. }
  154.  
  155.  
  156. - makeKeyAndOrderFront:sender
  157. {
  158.     [super makeKeyAndOrderFront:sender];
  159.     if(_visibleName != NULL)
  160.         [self saveVisibleUsingName:_visibleName];
  161.     return self;
  162. }
  163.  
  164.  
  165. - orderFrontRegardless
  166. {
  167.     [super orderFrontRegardless];
  168.     if(_visibleName != NULL)
  169.         [self saveVisibleUsingName:_visibleName];
  170.     return self;
  171. }
  172.  
  173. @end
  174.